// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.eva.android.widget;

import android.content.Context;
import android.os.Build;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.FrameLayout;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;

import com.x52im.rbchat.R;

/**
 * 通用查询输入框UI组件实现类。
 *
 * @author Jack Jiang
 * @since 8.2
 */
public class SearchInputView extends FrameLayout {

    /** 文本输入框 */
    private EditText editView;
    /** 撤销输入小按钮 */
    private View cancelView;

    private SearchListener queryListener;

    public SearchInputView(@NonNull Context context) {
        this(context, null);
    }

    public SearchInputView(@NonNull Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public SearchInputView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        inflate(getContext(), R.layout.search_input_view, this);
        cancelView = this.findViewById(R.id.search_input_view_cancel_search);
        cancelView.setOnClickListener(v -> editView.setText(""));
        editView = this.findViewById(R.id.search_input_view_editText);
        editView.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence txt, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence txt, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable txt) {
                search(txt.toString());
                handleCancelView(txt.toString());
            }
        });
    }

    private void search(String s) {
        if (queryListener != null) {
            queryListener.onSearchTextChange(s);
        }
    }

    private void handleCancelView(String s) {
        if (TextUtils.isEmpty(s)) {
            cancelView.setVisibility(View.GONE);
        } else {
            cancelView.setVisibility(View.VISIBLE);
        }
    }

    public void setKeyword(String s) {
        editView.setText(s);
        // 光标移到末尾
        WidgetUtils.setCursorToEnd(editView, false);
    }

    public void setOnQueryTextListener(SearchListener listener) {
        queryListener = listener;
    }

    public EditText getEditView(){
        return this.editView;
    }

//    public void setCursorToEnd(){
//        // 光标移动到尾部
//        editView.setSelection(editView.length());
//    }

    /**
     * 搜索内容改变监听器。
     */
    public interface SearchListener {
        void onSearchTextChange(String str);
    }
}
